// import cleanData from './dataCleaner.js'
// 生成 50 条数学模拟数据
const shuxueMockData = []
const knowledgeShortcomingsList = [
  '函数：需加强',
  '几何：需巩固',
  '代数运算：需提高',
  '概率统计：需强化',
  '三角函数：需理解',
  '数列：需熟练',
  '立体几何：需突破',
  '解析几何：需深入',
  '向量：需掌握',
  '导数：需精进',
  '不等式：需加强',
  '复数：需熟悉',
  '排列组合：需练习',
  '极限：需领悟',
  '数学归纳法：需运用',
  '逻辑推理：需提升',
  '数据处理：需加强',
  '图形变换：需掌握',
  '方程求解：需提高',
  '数学建模：需学习'
]

// 引入更丰富的姓和名组合
const names = ['张', '王', '李', '赵', '陈', '刘', '杨', '黄', '周', '吴', '郑', '孙', '马', '朱', '胡', '林', '郭', '何', '高', '罗', '梁', '宋', '唐', '许', '邓', '冯', '韩', '曹', '曾', '彭', '萧', '蔡', '潘', '田', '董', '袁', '于', '余', '叶', '蒋', '杜', '苏', '魏', '程', '吕', '丁', '沈', '任', '姚', '卢']
const secondNames = [
  // 单名
  '伟', '芳', '娜', '敏', '静', '丽', '强', '磊', '军', '洋', '勇', '艳', '杰', '娟', '涛', '明', '超', '辉', '玲', '华', '红', '燕', '飞', '龙', '云', '晶', '鑫', '欣', '婷', '雪',
  // 双名 - 传统组合
  '秀英', '秀兰', '秀珍', '秀华', '秀芳', '秀梅', '秀琴', '秀霞', '秀云', '秀芬',
  '志强', '志明', '志华', '志勇', '志刚', '志伟', '志军', '志国', '志强', '志强',
  '文静', '文华', '文娟', '文英', '文芳', '文霞', '文丽', '文秀', '文英', '文华',
  '春华', '春芳', '春梅', '春燕', '春霞', '春兰', '春英', '春丽', '春秀', '春华',
  '玉华', '玉芳', '玉梅', '玉霞', '玉兰', '玉英', '玉丽', '玉秀', '玉华', '玉芳',
  // 双名 - 现代组合
  '子涵', '子轩', '子墨', '子琪', '子萱', '子晴', '子怡', '子欣', '子悦', '子琪',
  '雨晴', '雨欣', '雨彤', '雨菲', '雨涵', '雨轩', '雨泽', '雨辰', '雨桐', '雨琪',
  '梦琪', '梦瑶', '梦婷', '梦洁', '梦华', '梦雪', '梦露', '梦菲', '梦涵', '梦琪',
  '思琪', '思涵', '思雨', '思彤', '思怡', '思颖', '思远', '思源', '思琪', '思涵',
  '佳琪', '佳怡', '佳欣', '佳颖', '佳悦', '佳琪', '佳涵', '佳彤', '佳琪', '佳怡',
  // 双名 - 寓意组合
  '浩然', '浩宇', '浩轩', '浩辰', '浩宇', '浩天', '浩宇', '浩宇', '浩宇', '浩宇',
  '晨曦', '晨光', '晨阳', '晨星', '晨露', '晨风', '晨光', '晨阳', '晨星', '晨露',
  '诗雨', '诗涵', '诗琪', '诗彤', '诗怡', '诗颖', '诗远', '诗源', '诗琪', '诗涵',
  '雅琪', '雅涵', '雅雨', '雅彤', '雅怡', '雅颖', '雅远', '雅源', '雅琪', '雅涵',
  '欣怡', '欣悦', '欣妍', '欣彤', '欣颖', '欣远', '欣源', '欣琪', '欣涵', '欣怡',
  // 双名 - 独特组合
  '梓涵', '梓轩', '梓墨', '梓琪', '梓萱', '梓晴', '梓怡', '梓欣', '梓悦', '梓琪',
  '若曦', '若涵', '若雨', '若彤', '若怡', '若颖', '若远', '若源', '若琪', '若涵',
  '语嫣', '语涵', '语雨', '语彤', '语怡', '语颖', '语远', '语源', '语琪', '语涵',
  '瑾瑜', '瑾涵', '瑾雨', '瑾彤', '瑾怡', '瑾颖', '瑾远', '瑾源', '瑾琪', '瑾涵',
  '悦然', '悦涵', '悦雨', '悦彤', '悦怡', '悦颖', '悦远', '悦源', '悦琪', '悦涵'
]

// 随机打乱数组
for (let i = secondNames.length - 1; i > 0; i--) {
  const j = Math.floor(Math.random() * (i + 1));
  [secondNames[i], secondNames[j]] = [secondNames[j], secondNames[i]]
}

// 用于记录已使用的名字组合
const usedNames = new Set()

// 生成学生姓名
const generateStudentName = (index) => {
  let nameIndex, secondNameIndex, fullName
  do {
    nameIndex = Math.floor(Math.random() * names.length)
    secondNameIndex = Math.floor(Math.random() * secondNames.length)
    fullName = names[nameIndex] + secondNames[secondNameIndex]
  } while (usedNames.has(fullName))

  usedNames.add(fullName)
  return fullName
}

for (let i = 1; i <= 500; i++) {
  const randomName = generateStudentName(i)
  // 调整成绩生成逻辑，让大部分成绩集中在 60 - 89 分
  let examScore
  const random = Math.random()
  if (random < 0.1) {
    // 10% 的概率生成 0 - 59 分（差）
    examScore = Math.floor(Math.random() * 60)
  } else if (random < 0.9) {
    // 80% 的概率生成 60 - 89 分（良好、一般）
    examScore = Math.floor(Math.random() * 30) + 60
  } else {
    // 10% 的概率生成 90 - 100 分（优秀）
    examScore = Math.floor(Math.random() * 11) + 90
  }

  // 引入脏数据：10% 的概率让成绩为 null
  if (Math.random() < 0.02) {
    examScore = null
  }

  // 确保上次考试成绩与这次考试成绩的差值在 -20 到 20 之间
  let previousExamScore = examScore !== null ? Math.max(0, Math.min(100, examScore + Math.floor(Math.random() * 41) - 20)) : null

  // 引入脏数据：10% 的概率让上次成绩为 null
  if (Math.random() < 0.02) {
    previousExamScore = null
  }

  const examDate = '2025-07-16'
  let status
  if (examScore === null) {
    status = '未知'
  } else if (examScore >= 90) {
    status = '优秀'
  } else if (examScore >= 70) {
    status = '良好'
  } else if (examScore >= 60) {
    status = '一般'
  } else {
    status = '差'
  }
  const gender = Math.random() > 0.5 ? '男' : '女'
  const age = Math.floor(Math.random() * 3) + 15 // 15 - 17 随机整数
  let attendanceRate = `${Math.floor(Math.random() * 10) + 90}%`

  // 引入脏数据：10% 的概率让出勤率为 null
  if (Math.random() < 0.02) {
    attendanceRate = null
  }

  const homeworkCompletionRate = `${Math.floor(Math.random() * 10) + 80}%`

  const item = {
    id: i,
    name: randomName,
    class: '二班',
    subject: '数学',
    examScore,
    examDate,
    status,
    gender,
    age,
    attendanceRate,
    homeworkCompletionRate,
    previousExamScore
  }

  // 生成随机的 weeklyStudyHours 数据
  const randomHours = []
  for (let j = 0; j < 12; j++) {
    // 生成 0 到 14 之间的随机整数
    const randomHour = Math.floor(Math.random() * 15)
    randomHours.push(randomHour)
  }
  item.weeklyStudyHours = randomHours

  const learningStyle = {
    language: Math.floor(Math.random() * 10) + 1, // 1 - 10 随机整数
    logic: Math.floor(Math.random() * 10) + 1,
    spatial: Math.floor(Math.random() * 10) + 1,
    musical: Math.floor(Math.random() * 10) + 1,
    bodily: Math.floor(Math.random() * 10) + 1,
    interpersonal: Math.floor(Math.random() * 10) + 1,
    intrapersonal: Math.floor(Math.random() * 10) + 1
  }
  const interestChange = {
    math: Array.from({ length: 5 }, () => Math.floor(Math.random() * 10) + 1), // 1 - 10 随机整数数组
    english: Array.from({ length: 5 }, () => Math.floor(Math.random() * 10) + 1),
    chinese: Array.from({ length: 5 }, () => Math.floor(Math.random() * 10) + 1)
  }
  item.learningStyle = learningStyle
  item.interestChange = interestChange
  const selectedShortcomings = []
  while (selectedShortcomings.length < 3) {
    const randomIndex = Math.floor(Math.random() * knowledgeShortcomingsList.length)
    const shortcoming = knowledgeShortcomingsList[randomIndex]
    if (!selectedShortcomings.includes(shortcoming)) {
      selectedShortcomings.push(shortcoming)
    }
  }
  item.knowledgeShortcomings = selectedShortcomings

  shuxueMockData.push(item)
}
// const cleanedShuxueCopyData = cleanData(shuxueMockData)
// export default cleanedShuxueCopyData
export default shuxueMockData
